package com.lei.springbootpractice.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lei.springbootpractice.pojo.ProductsPojo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ProductsDao extends BaseMapper<ProductsPojo> {

    /**
     * 根据条件筛选商品（带JOIN查询分类信息）
     * @param categoryIds 分类ID列表
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 商品列表
     */
    List<ProductsPojo> selectProductsWithFilter(
        @Param("categoryIds") List<String> categoryIds,
        @Param("minPrice") Double minPrice,
        @Param("maxPrice") Double maxPrice
    );

    /**
     * 基础商品查询（不带JOIN，性能更好）
     * @param categoryIds 分类ID列表
     * @param minPrice 最低价格
     * @param maxPrice 最高价格
     * @return 商品列表
     */
    List<ProductsPojo> selectProductsBasic(
        @Param("categoryIds") List<String> categoryIds,
        @Param("minPrice") Double minPrice,
        @Param("maxPrice") Double maxPrice
    );

    /**
     * 原子性减少库存
     * @param productId 商品ID
     * @param quantity 减少数量
     * @return 影响行数
     */
    int reduceInventory(@Param("productId") String productId, @Param("quantity") int quantity);
}
